#include <iostream>
using namespace std;

class Context
{
};
class ProStrategy
{
public:
    virtual double CalPro(const Context &ctx) = 0;
    virtual ~ProStrategy() {};
};

class Vac_1 : public ProStrategy
{
public:
    virtual double CalPro(const Context &ctx) {};
};

class Vac_2 : public ProStrategy
{
public:
    virtual double CalPro(const Context &ctx) {};
};

class Vac_3 : public ProStrategy
{
public:
    virtual double CalPro(const Context &ctx) {};
};

class Promotion
{
public:
    Promotion(ProStrategy *s) : _s(s) {}

    //依赖注入，通过传参的方式来隔离类与类
    double CalPromotion(const Context &ctx)
    {
        _s->CalPro(ctx);
    }

private:
    ProStrategy *_s;
};

int main()
{
    
}